/* 
给定一个排序的整数数组 nums 和一个整数目标值 target ，请在数组中找到 target ，并返回其下标。如果目标值不存在于数组中，返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。


输入: nums = [1,3,5,6], target = 5
输出: 2


思路：排序数组查找某项，优先考虑二分法


*/

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
 var searchInsert = function(nums, target) {
    let len=nums.length
    // 声明两个指针
    let i=0,j=len-1
    while(i<=j){
        // 取中间项
        let mid=Math.floor((i+j)/2)
        if(nums[mid]<target){
            // 左指针右移到mid右侧
            i=mid+1
        }else if(nums[mid]>target){
            // 右指针左移到mid左侧
            j=mid-1
        }else{
            return mid
        }
    }
    // 上面循环没找到则此时的i指向为要添加的位置索引
    return i
};


let nums = [1,3,5,6], target = 2
let res=searchInsert(nums, target)
console.log(res);